package com.xinsoft.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xinsoft.entity.dto.SysSupplierDTO;
import com.xinsoft.entity.dto.SysSupplierPageParam;
import com.xinsoft.entity.po.SysSupplier;
import com.xinsoft.entity.vo.SysSupplierVo;
import org.json.JSONObject;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
* @author hsm
* @description 针对表【sys_supplier(供应商)】的数据库操作Service
* @createDate 2023-05-22 15:13:03
*/
public interface SysSupplierService extends IService<SysSupplier> {

        /**
         * 方法描述: [查询供应商分页列表]
         * 初始作者: hsm
         * 创建时间:  2023
         * 开始版本:
         * =================================================
         * 修改记录：
         * 修改作者 日期 修改内容>
         * ================================================
         * param [sysSupplierParam]
         * return SysSupplierVo>
         */
        IPage<SysSupplierVo> findPageListByParam(SysSupplierPageParam param);

        /**
         * 方法描述: [添加供应商]
         * 初始作者: hsm
         * 创建时间:  2023
         * 开始版本:
         * =================================================
         * 修改记录：
         * 修改作者 日期 修改内容>
         * ================================================
         * param [sysSupplierDTO]
         * return com.socks.zhhc.core.system.user.entity.SysSupplier
         */
        SysSupplier addSysSupplier(SysSupplierDTO sysSupplierDTO);

        /**
         * 方法描述: [添加供应商]
         * 初始作者: hsm
         * 创建时间:  2023
         * 开始版本:
         * =================================================
         * 修改记录：
         * 修改作者 日期 修改内容>
         * ================================================
         * param [sysSupplierDTO]
         * return SysSupplier
         */
        SysSupplier editSysSupplier(SysSupplierDTO sysSupplierDTO);

        /**
         * 方法描述: [删除供应商信息]
         * 初始作者: hsm
         * 创建时间:  2023
         * 开始版本:
         * =================================================
         * 修改记录：
         * 修改作者 日期 修改内容>
         * ================================================
         * param [userName]
         * return java.lang.Boolean
         */
        void del(List<Integer> ids);

        /**
         * 方法描述: [获取供应商]
         * 初始作者: hsm
         * 创建时间:  2023/04/20
         * 开始版本:
         * =================================================
         * 修改记录：
         * 修改作者 日期 修改内容>
         * ================================================
         * param [sysSupplier]
         * return com.socks.zhhc.core.system.user.entity.SysSupplier
         */
        SysSupplierDTO getSysSupplier(Integer id);

        /**
         * 方法描述: [启用]</br>
         * 初始作者: hsm<br/>
         * 创建日期: 2023/04/20
         * 开始版本: 1.0.0<br/>
         * =================================================<br/>
         * 修改记录：<br/>
         * 修改作者 日期 修改内容<br/>
         * ================================================<br/>
         *
         * @param ids
         * @return void
         */
        void enable(List<Integer> ids);

        /**
         * 方法描述: [停用]</br>
         * 初始作者: hsm<br/>
         * 创建日期: 2023/04/20
         * 开始版本: 1.0.0<br/>
         * =================================================<br/>
         * 修改记录：<br/>
         * 修改作者 日期 修改内容<br/>
         * ================================================<br/>
         *
         * @param ids
         * @return void
         */
        void disable(List<Integer> ids);

        /**
         * 方法描述: [根据供应商审核]
         * 初始作者: hsm
         * 创建时间:  2023/04/20
         * 开始版本:
         * =================================================
         * 修改记录：
         * 修改作者 日期 修改内容>
         * ================================================
         * param [username] 供应商名
         * return SysSupplier
         */

        void audit(List<Integer> ids );

        /**
         * 方法描述: [根据供应商反审核]
         * 初始作者: hsm
         * 创建时间:  2023/04/20
         * 开始版本:
         * =================================================
         * 修改记录：
         * 修改作者 日期 修改内容>
         * ================================================
         * param [username] 供应商名
         * return SysSupplier
         */
        void deAudit(List<Integer> ids);

        /**
         * 方法描述: [导入]</br>
         * 初始作者: hsm<br/>
         * 创建日期: 2023/04/20
         * 开始版本: 1.0.0<br/>
         * =================================================<br/>
         * 修改记录：<br/>
         * 修改作者 日期 修改内容<br/>
         * ================================================<br/>
         *
         * @param multipartFile
         * @return void
         */
        JSONObject importExcel(MultipartFile multipartFile, HttpServletResponse response) throws IOException;


        /**
         * 方法描述: [列表不分页]</br>
         * 初始作者: hsm<br/>
         * 创建日期: 2023/04/20
         * 开始版本: 1.0.0<br/>
         * =================================================<br/>
         * 修改记录：<br/>
         * 修改作者 日期 修改内容<br/>
         * ================================================<br/>
         *
         * @param param
         * @return void
         */
        List<SysSupplierVo> findListByParam(SysSupplierPageParam param);

    void insertOrUpdateBatch(List<SysSupplier> sysSupplierList);
}
